package FileMethod.traverse;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;

//遍历和获取方法
public class IntroduceOne {
    public static void main(String[] args) {
        /*
        public static File[] listRoots()                列出可用的文件系统根
        public String[] list()                          获取当前路径的所有内容
        public String[] list(FilenameFilter filter)     利用文件名过滤器获取当前路径下的所有内容
        (重点)public File[] listFile()                   获取当前该路径下的所有内容
        public File[] listFiles(FileFilter filter)      利用文件名过滤器获取当前路径下的所有内容
        public File[] listFiles(FileFilter filter）      利用文件名过滤器获取当前路径下所有内容

        测试文件夹位置:
            D:\File
         */

        //listRoots()      列出可用的文件系统根
        File[] arr=File.listRoots();
        System.out.println(Arrays.toString(arr));

        System.out.println("————————————————");

        //list()    获取当前路径的所有内容
        File f1=new File("D:\\File");
        String[] arr1=f1.list();
        for (String s : arr1) {
            System.out.println(s);
        }
        System.out.println("————————————————");

        //list(FilenameFilter filter)     利用文件名过滤器获取当前路径下的所有内容
        //过滤出txt文件
            File f2=new File("D:\\File");
            //accept中的形参(dir,name)分别表示文件夹里面的每一个文件和文件夹的路径
            //参数一(dir):表示父级路径
            //参数二(name):表示子级路径
            //返回值:如果为true,就表示当前路径会保留
            //      如果为false,就表示当前路径会舍弃

            String[] list = f2.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    //获取路径
                    File src=new File(dir,name);
                    //利用endWith进行判断是否以“.txt”为结尾
                    return src.isFile()&&name.endsWith(".txt");
                }
            });

            System.out.println(Arrays.toString(list));

    }
}
